package com.nbcio.cd.domain;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.nbcio.common.tenant.core.TenantEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serial;

/**
 * 云网盘文件对象 cd_file
 *
 * @author nbacheng
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("cd_file")
public class CdFile extends TenantEntity {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * 文件ID
     */
    @TableId(value = "file_id")
    private Long fileId;

    /**
     * 文件名称
     */
    private String fileName;

    /**
     * 原始文件名
     */
    private String originalName;

    /**
     * 文件扩展名
     */
    private String fileExtension;

    /**
     * 文件大小（字节）
     */
    private Long fileSize;

    /**
     * 文件类型
     */
    private String fileType;

    /**
     * MIME类型
     */
    private String mimeType;

    /**
     * 文件MD5哈希值
     */
    private String fileHash;

    /**
     * 所属文件夹ID
     */
    private Long folderId;

    /**
     * 文件存储路径
     */
    private String filePath;

    /**
     * OSS对象存储ID
     */
    private Long ossId;

    /**
     * 下载次数
     */
    private Integer downloadCount;

    /**
     * 查看次数
     */
    private Integer viewCount;

    /**
     * 是否共享
     */
    private Boolean isShared;

    /**
     * 分享码
     */
    private String shareCode;

    /**
     * 分享过期时间
     */
    private java.util.Date shareExpireTime;

    /**
     * 访问级别：private私有，public公开，restricted受限
     */
    private String accessLevel;

    /**
     * 文件版本号
     */
    private Integer version;

    /**
     * 父文件ID（版本管理）
     */
    private Long parentFileId;

    /**
     * 状态（0正常 1停用）
     */
    private String status;

    /**
     * 创建部门
     */
    private Long createDept;

    /**
     * 删除标志（0代表存在 2代表删除）
     */
    @TableLogic
    private String delFlag;
}
